package com.cictec.middleware.commons.utils;

import java.io.IOException;

/**
 * window环境bat文件操作工具类
 * @author ql
 */
public class CmdUtils {

	/*
	 * 执行bat脚本
	 * 
	 * <br>cmd /c dir 是执行完dir命令后关闭命令窗口
	 * <br>cmd /k dir 是执行完dir命令后不关闭命令窗口
	 * <br>cmd /c start dir 会打开一个新窗口后执行dir命令，原窗口会关闭
	 * <br>cmd /k start dir 会打开一个新窗口后执行dir命令，原窗口不会关闭
	 * <br>cmd /? 查看帮助信息
	 * @param strcmd 执行脚本命令
	 */
	public static void main(String[] args) {
		
		String strcmd = "cmd /c start D:\\positiondb\\middle_caculate_startup.bat";
		callCmd(strcmd);
		strcmd = "cmd /c start D:\\positiondb\\middle_caculate_shutdown.bat";
		callCmd(strcmd);
		
//		callCmd(strcmd);
	}

	/**
	 * 执行bat脚本
	 * 
	 * <br>cmd /c dir 是执行完dir命令后关闭命令窗口
	 * <br>cmd /k dir 是执行完dir命令后不关闭命令窗口
	 * <br>cmd /c start dir 会打开一个新窗口后执行dir命令，原窗口会关闭
	 * <br>cmd /k start dir 会打开一个新窗口后执行dir命令，原窗口不会关闭
	 * <br>cmd /? 查看帮助信息
	 * @param strcmd 执行脚本命令
	 */
	public static void callCmd1(String strcmd) {
		// 执行批处理文件
		// String strcmd = "cmd /c start D:\\positiondb\\2.bat";
		Runtime rt = Runtime.getRuntime();
		Process ps = null;
		try {
			ps = rt.exec(strcmd);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		try {
			ps.waitFor();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		int i = ps.exitValue();
		if (i == 0) {
			System.out.println("执行完成.");
		} else {
			System.out.println("执行失败.");
		}
		ps.destroy();
		ps = null;
	}

	/**
	 * 执行bat脚本
	 * 
	 * <br>cmd /c dir 是执行完dir命令后关闭命令窗口
	 * <br>cmd /k dir 是执行完dir命令后不关闭命令窗口
	 * <br>cmd /c start dir 会打开一个新窗口后执行dir命令，原窗口会关闭
	 * <br>cmd /k start dir 会打开一个新窗口后执行dir命令，原窗口不会关闭
	 * <br>cmd /? 查看帮助信息
	 * @param strcmd 执行脚本命令
	 */
	public static void callCmd(String strcmd) {
		Runtime rt = Runtime.getRuntime();
		try {
			rt.exec(strcmd);
//			 rt.exec("cmd.exe /C start wmic process where name='cmd.exe' call terminate");
//			rt.exec("cmd /c start D:\\positiondb\\middle_caculate_startup.bat");
//			 rt.exec("cmd /k start D:\\positiondb\\middle_caculate_shutdown.bat");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}